package view;

import java.awt.event.*;
import java.util.ArrayList;

import javax.swing.*;

import model.donnee.Film;
import controller.ConsultationFilmsListener;
import controller.FilmListeListener;

public class ConsultationFilms extends JFrame{

	private static final long serialVersionUID = 2L;
	
	private final String titreFrame = "Consultation de films";
	private final int largeurFrame = 600;
	private final int hauteurFrame = 500;
	
	private JLabel lblTitre = new JLabel("Titre : ");
	private JLabel lblAnneeMin = new JLabel("Annee Min : ");
	private JLabel lblAnneeMax = new JLabel("Annee Max : ");
	private JLabel lblPays = new JLabel("Pays : ");
	private JLabel lblLangue = new JLabel("Langue : ");
	private JLabel lblGenre = new JLabel("Genre : ");
	private JLabel lblRealisateur = new JLabel("Realisateur : ");
	private JLabel lblActeur = new JLabel("Acteur : ");
	private ArrayList<JLabel> listeLbl = new ArrayList<JLabel>();
	
	private JTextField txtTitre = new JTextField();
	private JTextField txtAnneeMin = new JTextField();
	private JTextField txtAnneeMax = new JTextField();
	private JTextField txtPays = new JTextField();
	private JTextField txtLangue = new JTextField();
	private JTextField txtGenre = new JTextField();
	private JTextField txtRealisateur = new JTextField();
	private JTextField txtActeur = new JTextField();
	private ArrayList<JTextField> listeTxt = new ArrayList<JTextField>();
	
	private final JButton btnRecherche = new JButton("Recherche");
	
	private final JButton btnTitre = new JButton("Ajouter");
	private final JButton btnPays = new JButton("Ajouter");
	
	private final JButton btnLangue = new JButton("Ajouter");
	private final JButton btnGenre = new JButton("Ajouter");
	
	private final JButton btnRealisateur = new JButton("Ajouter");
	private final JButton btnActeur = new JButton("Ajouter");
	private ArrayList<JButton> listebtn = new ArrayList<JButton>();
	
	private final JButton btnSupprimerFiltre = new JButton("Réinitialiser");
	
	private JList filmList = new JList();
	private ArrayList<Film> resultatRecherche = new ArrayList<Film>();
	
	private JScrollPane resultatPane = new JScrollPane();
	
	public ConsultationFilms() {
		init();
	}
	
	public void init(){
		listeLbl.add(lblTitre);
		listeLbl.add(lblAnneeMin);
		listeLbl.add(lblAnneeMax);
		listeLbl.add(lblPays);
		listeLbl.add(lblLangue);
		listeLbl.add(lblGenre);
		listeLbl.add(lblRealisateur);
		listeLbl.add(lblActeur);
		
		listebtn.add(btnTitre);
		listebtn.add(btnPays);
		listebtn.add(btnLangue);
		listebtn.add(btnGenre);
		listebtn.add(btnRealisateur);
		listebtn.add(btnActeur);
		
		listeTxt.add(txtTitre);
		listeTxt.add(txtAnneeMin);
		listeTxt.add(txtAnneeMax);
		listeTxt.add(txtPays);
		listeTxt.add(txtLangue);
		listeTxt.add(txtGenre);
		listeTxt.add(txtRealisateur);
		listeTxt.add(txtActeur);
		
		setTitle(titreFrame);
		setSize(largeurFrame, hauteurFrame);
		setLayout(null);
		
		txtTitre.setEditable(false);
		txtPays.setEditable(false);
		txtLangue.setEditable(false);
		txtGenre.setEditable(false);
		txtRealisateur.setEditable(false);
		txtActeur.setEditable(false);
		
		int j = 0;
		for(int i = 0; i < listeLbl.size(); ++i){
			listeLbl.get(i).setBounds(10, 10+i*30, 120, 20);
			listeTxt.get(i).setBounds(100, 10+i*30, 100, 20);
			
			if (i != 1 && i != 2 ) {
				listebtn.get(j).setBounds(210, 10+i*30, 100, 20);
				this.add(listebtn.get(j++));
				}
			
			this.add(listeLbl.get(i));
			this.add(listeTxt.get(i));
		}
		
		btnTitre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String titre = JOptionPane.showInputDialog("Entrer le titre du film :");
				
				if (titre != null && !titre.isEmpty()) {
					txtTitre.setText(txtTitre.getText() + titre + ";");
				}
				
			}
		});
		
		btnPays.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String pays = JOptionPane.showInputDialog("Entrer le nom du pays :");
				
				if (pays != null && !pays.isEmpty()) {
					txtPays.setText(txtPays.getText() + pays + ";");
				}
				
			}
		});
		
		btnLangue.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String langue = JOptionPane.showInputDialog("Entrer la langue :");
				
				if (langue != null && !langue.isEmpty()) {
					txtLangue.setText(txtLangue.getText() + langue + ";");
				}
				
			}
		});
		
		btnGenre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String genre = JOptionPane.showInputDialog("Entrer le genre :");
				
				if (genre != null && !genre.isEmpty()) {
					txtGenre.setText(txtGenre.getText() + genre + ";");
				}
				
			}
		});
		
		btnRealisateur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String realisateur = JOptionPane.showInputDialog("Entrer le realisateur :");
				
				if (realisateur != null && !realisateur.isEmpty()) {
					txtRealisateur.setText(txtRealisateur.getText() + realisateur + ";");
				}
				
			}
		});
		
		btnActeur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String acteur = JOptionPane.showInputDialog("Entrer le nom de l'acteur :");
				
				if (acteur != null && !acteur.isEmpty()) {
					txtActeur.setText(txtActeur.getText() + acteur + ";");
				}
				
			}
		});
		
		btnSupprimerFiltre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int isYes = JOptionPane.showConfirmDialog(null, "Voulez-vous réinitialiser les champs !");
				
				if (isYes == 0) {
					for (int i = 0; i != listeTxt.size(); ++i) {
						listeTxt.get(i).setText("");
					}
				}
				
			}
		});
		
		btnRecherche.addActionListener(new ConsultationFilmsListener(txtActeur,txtAnneeMax,txtAnneeMin,
				txtGenre,txtLangue,txtPays,txtRealisateur,txtTitre, filmList));
		
		btnRecherche.setBounds(10, 260, 100, 20);
		this.add(btnRecherche);
		
		btnSupprimerFiltre.setBounds(120, 260, 100, 20);
		this.add(btnSupprimerFiltre);
		
		resultatPane.setBounds(320, 10, 250, 250);
		resultatPane.setViewportView(filmList);
		
		this.add(resultatPane);
		
		this.setVisible(true);
		
		filmList.addMouseListener(new FilmListeListener(filmList));
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
}
